﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    //一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，以实现对两个整数的加、减、乘、除运算，并显示出计算结果。

    //1、创建Calculate(计算)积累，其中包含两个整型的protected（保护）成员，用以接收用户输入的两个整数。定义一个DisplayResult()虚方法，计算并输出结果。
    //2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，实现两个整数的加、减、乘、除运算，并输出结果。
    //3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
    //4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，实现计算和显示结果。


    //二、创建一个Shape（形状）类，此类包含一个名为color的数据成员，用于存储颜色，这个类还包含一个名为GetArea()的虚方法（这个方法是用来获取形状面积的）。
    //基于这个Shape，创建两个子类：Circle（圆形类）和Square（正方形类），Circle类中包含radius（半径）的数据成员，Square类中包含sideLen（边长）的数据成员，这两个子类都去重写父类的GetArea()方法，各自去实现计算自己的面积。

    //在主类中添加一个方法，参数类型就是Shape，方法体中，用形参去调用GetArea()方法。
    //main方法中去测试这个方法。

    class Program
    {
        static void Main(string[] args)
        {
            jisaunji();
            SHAPE();
        }
        static void SHAPE()
        {
            Console.WriteLine("请输入要计算面积的图形：1.圆 2.正方形");
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    Console.WriteLine("请输入圆形的半径：");
                    double r = double.Parse(Console.ReadLine());
                    aa(r);
                    break;
                case 2:
                    Console.WriteLine("请输入圆形的半径：");
                    double z = double.Parse(Console.ReadLine());
                    bb(z);
                    break;
                default:
                    break;
            }
        }
        public static aa(double xr)
        {
            Square sq = new Square();
            return sq.GetArea();
        }
        public static bb(double xz)
        {
            Circle cr = new Circle();
            return cr.GetArea();
        }
        static void jisaunji()
        {
            Console.WriteLine("请输入第一个数：");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入运算符：");
            string c = Console.ReadLine();
            Console.WriteLine("请输入第二个数：");
            int b = int.Parse(Console.ReadLine());

            Calculate c1 = new Add();
            Calculate c2 = new Cutdown();
            Calculate c3 = new Chen();
            Calculate c4 = new Chu();

            Calculate cc = new Calculate(a, b, c);
            if (c=="+")
            {
                cc.jisuan(c1);
            }
            else if (c=="-")
            {
                cc.jisuan(c2);
            }
            else if (c=="*")
            {
                cc.jisuan(c3);
            }
            else if (c=="/")
            {
                cc.jisuan(c4);
            }
            else
            {
                Console.WriteLine("输入错误，请重新输入！");
            }
            Father(cc);
        }
        static void Father(Calculate ccc)
        {
            ccc.jisuan(ccc);
        }
    }
}
